查看原文
其他

8 个用于 Kubernetes 持久化存储的 CNCF 项目

点击关注 👉 进击云原生 2022-11-10

点击上方蓝字关注 👆👆

大家好呀,近期微信公众号改版,为了防止错过消息,希望大家可以动动小手将此公众号添加到“星标⭐”,非常感谢~


后台回复【资料包】获取学习资料

在容器化方面,数据的持久化存储是个难题。临时容器是一个短暂的计算环境,其中代码不会永远存储。但是您仍然需要将数据存储在某个物理磁盘上!

容器的高度可变性与有状态存储的需求不一致,这是一个引入了无数解决方法的难题。针对 Kubernetes 中有状态的服务 ,通常必须依靠外部工具和数据库来保存和传输这些数据。

CNCF 拥有广泛的与 Kubernetes 集成的持久数据存储工具,以帮助管理使用持久存储卷的管理任务。下面,我们将回顾 CNCF 托管的其中一些工具。这些软件包的范围从提供云原生存储、在客户端应用程序和存储之间提供标准接口以及提供数据备份和恢复选项。

1. Rook

Kubernetes 的存储编排

网站:https://rook.io/

GitHub:https://github.com/rook/rook

持久存储系统需要大量维护以维持运营。Rook 是 Kubernetes 的开源云原生存储实用程序,旨在自动化存储管理员的一些任务,例如程序化存储、迁移、灾难恢复、监控和资源管理。Rook 支持文件、块和对象存储类型。

Rook 实际上利用了 Kubernetes 的架构,使用了 K8s Operator。截至 2022 年,CNCF 毕业项目 Rook 支持三个存储提供商:Ceph[1]Cassandra[2]NFS[3]。可以在此处查看 Rook论坛[4]以了解项目的最新信息并提出问题。

2. Longhorn

基于 Kubernetes 构建的云原生分布式存储

GitHub:https://github.com/longhorn/longhorn

网站:https://longhorn.io/

Longhorn 是 Kubernetes 分布式块存储的开源工具。使用 Longhorn,您可以为 Kubernetes 集群复制存储,并利用持久卷的内置增量备份。您可以使这些快照重复出现并将它们备份到辅助对象存储。这是通过“将大型块存储控制器划分为多个较小的存储控制器”来实现的,从而有助于缓解与各种基于容器的微服务的存储相关的问题。

Longhorn 还与非云托管的 K8s 集群兼容,并具有可免费使用的图形管理 UI。与 Rook 类似,它是 Kubernetes 原生的。Longhorn 最初由 Rancher 开发,现在是 CNCF 内的一个 孵化项目[5]

3.CubeFS

云原生分布式文件系统和对象存储。

GitHub:https://github.com/cubeFS/cubefs

网站:https://cubefs.io/

CubeFS,原名 ChubaoFS,是一个分布式文件系统,旨在支持大规模的云原生架构。研究发现,与 Ceph 相比,CFS 的速度大约快三倍。CubeFS 的功能是让容器集群中托管的客户端应用程序与元数据子系统和数据子系统通信的卷对话。这些卷可以部署到各种容器中,以实现许多不同客户端之间的文件共享。

CubeFS 的高级底层元数据子系统本身是分布式的,以提高性能和可扩展性。CubeFS 可用作多租户访问的通用存储引擎或确保同一文件副本的一致性。正如文档[6]所述,像 CubeFS 这样的分布式文件系统尤其有助于创建机器学习模型。目前,CubeFS 是 CNCF 中的一个孵化项目。

4.K8up

Kubernetes 和 OpenShift 备份 operator

GitHub:https://github.com/k8up-io/k8up

网站:https://k8up.io/

K8up 被其创建者亲切地称为“番茄酱”,是用于执行备份的 Kubernetes operator。K8up 可通过 Helm Chart 方便地分发,易于为特定的云原生备份用例部署和定制。K8up 可用于自动备份任何标记为ReadWriteMany或带有自定义标签的持久卷声明 (PVC)。您还可以使用 K8up 启动按需备份、安排例行备份、安排长期存档以及查看和管理备份。K8up 可与 S3 兼容的存储一起使用。目前,K8up 是 CNCF 的沙盒项目。

5.OpenEBS

开源 container-attached 存储(CAS)

GitHub:https://github.com/openebs/openebs

网站:https://www.openebs.io/

OpenEBS 是另一个开源项目,旨在帮助简化使用云原生基础架构维护有状态工作负载的过程。借助 OpenEBS,开发人员可以使用熟悉的 K8s 命令和 API 来控制特定容器的工作负载存储。存储软件本身由 Kubernetes 容器化和编排。该项目将此设置称为容器附加存储 (CAS)。OpenEBS 最初由 MayaData 创建和赞助,目前,是 CNCF 的一个沙盒项目。

6. ORAS

OCI registry-as-storage

GitHub:https://github.com/oras-project/oras

网站:https://oras.land/

您可能熟悉Open Container Initiative[7] (OCI),该组织为容器设置行业标准格式。一种这样的格式是分发规范[8],它定义了存储、处理和拉取容器镜像的标准方法。

开发人员也开始使用 OCI 注册表来存储非容器类型。因此,OCI 工件[9]创建来定义这些任意存储类型。最后,OCI registry-as-storage (ORAS) 是一个实用程序,专门帮助从 OCI 注册中心推送和拉取这些通用 OCI 工件。迄今为止,几乎没有实施 ORAS。该文档仅引用 Singularity 和 Helm 项目作为当前实现。ORAS 是 CNCF 的沙盒项目。

7. Piraeus Datastore

Kubernetes 的高可用数据存储

GitHub:https://github.com/piraeusdatastore/piraeus

网站:https://piraeus.io/

Piraeus 是一个开源云原生存储系统,旨在与 Kubernetes 本地持久卷一起使用。该实用程序提供动态配置、资源管理和高可用性等功能,为有状态工作负载启用故障转移过程。与此列表中的其他项目相比,Piraeus 非常易于使用,并且开始只需要几个命令。如果您的项目仅使用本地存储,Piraeus 是一个不错的选择。目前,Piraeus 是 CNCF 的沙盒项目。

8. Vineyard

内存中不可变的数据管理器

GitHub:https://github.com/v6d-io/v6d

网站:https://v6d.io/

与本文的其他项目不同,Vineyard (v6d) 的独特之处在于它专注于内存数据存储。Vineyard 适用于大型数据系统,因为它使用零拷贝数据共享来减少冗余处理。它提供了一种抽象的方式来处理可能利用图形数据库的多个计算框架。目前,Vineyard 是一个沙盒 CNCF 项目。

总结

要在 Kubernetes 中实现 持久存储[10],必须定义一个持久卷[11],其中有许多StorageClasses[12]用于各种存储类型。例如,您使用本地存储并可以指向运行 Kubernetes 的主机上的特定文件夹,但这并不总是最佳实践,因为您经常需要跨节点共享存储。运行 NFS 服务器是一种选择,但大多数用例都希望将云存储作为持久卷。

无论他们使用何种基础架构,工程师和 ITOps 都需要轻松访问以存储和检索数据。为了获得云原生生态系统的全部优势,将存储与终端节点解耦并在整个容器生态系统中进行智能编排非常重要。正如我们在上面看到的,CNCF 中有许多项目试图简化将 Kubernetes 与持久的、有状态的存储结合起来的过程。

参考资料

[1]

Ceph: https://github.com/rook/rook

[2]

Cassandra: https://github.com/rook/cassandra

[3]

NFS: https://github.com/rook/nfs

[4]

论坛: https://groups.google.com/g/rook-dev

[5]

孵化项目: https://www.cncf.io/blog/2021/11/04/longhorn-brings-cloud-native-distributed-storage-to-the-cncf-incubator/

[6]

文档: https://chubaofs.readthedocs.io/en/latest/overview.html

[7]

Open Container Initiative: https://opencontainers.org/

[8]

分发规范: https://containerjournal.com/features/oci-announces-distribution-specification-v1-0/

[9]

OCI 工件: https://github.com/opencontainers/artifacts

[10]

持久存储: https://www.youtube.com/watch?v=pumX2Ds5L0c&ab_channel=TheDigitalLife

[11]

持久卷: https://kubernetes.io/docs/concepts/storage/persistent-volumes/

[12]

StorageClasses: https://kubernetes.io/docs/concepts/storage/storage-classes/


- END -

原文:

https://containerjournal.com/features/8-cncf-projects-for-cloud-native-persistent-storage/




后台回复“加群”,带你进入高手如云交流群



推荐阅读


开源容器 Podman 常用命令总结!

DevOps: 每个阶段最常用的工具有哪些?

Nomad 会替代 Kubernetes 吗?两者如何选择?

k8s 1.24 将结束对 dockershim 的支持

一文全方位了解什么是云原生?

Docker 入门终极指南,详细版!

开发者必备的 7 款效率提升工具!

16个 Awesome 工具让 Kubernetes 如虎添翼

漫画轻松看懂如何用 Kubernetes 实现 CI/CD

5 款顶级 Docker 容器 GUI 管理工具!

阿里开源的低代码引擎,已收获 4.5K 星星

这 6 个方面,对微服务安全至关重要

这个开源工具防止错误配置  乱入 K8s 生产环境

5 个 Docker 替代方案

6 个 CI/CD 的 CNCF 项目,你知道几个?

新手必须知道的 Kubernetes 架构

Kubernetes 架构核心点详细总结!



全网粉丝20W的头部大号,专注云原生、Golang、Linux实用脚本,效率工具,免费CSDN下载,回复【go】获取近 6 万 Star 的资源回复【1024】获取全种类IT资料,回复【红包封面】获取超好看封面,回复【加群】进入高手如云技术交流群


分享、点赞和在看

支持我们分享更多好文章,谢谢!

                

 点个在看集群永保稳定👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存